Add animated weather data 您所在的位置:网站首页 Maps SDK Android Docs Mapbox Add animated weather data

Add animated weather data

2024-06-26 20:04| 来源: 网络整理| 查看: 265

Load a raster image to a style using ImageSource and display it on a map as animated weather data using RasterLayer.

activity_animated_imagesourcegithub View on GitHubAnimatedImageSourceActivity.ktgithub View on GitHubpackage com.mapbox.maps.testapp.examples import android.content.Contextimport android.graphics.Bitmapimport android.os.Bundleimport android.os.Handlerimport android.os.Looperimport androidx.appcompat.app.AppCompatActivityimport com.mapbox.maps.MapboxMapimport com.mapbox.maps.Styleimport com.mapbox.maps.extension.style.layers.generated.rasterLayerimport com.mapbox.maps.extension.style.sources.generated.ImageSourceimport com.mapbox.maps.extension.style.sources.generated.imageSourceimport com.mapbox.maps.extension.style.sources.getSourceAsimport com.mapbox.maps.extension.style.sources.updateImageimport com.mapbox.maps.extension.style.styleimport com.mapbox.maps.testapp.Rimport com.mapbox.maps.testapp.databinding.ActivityAnimatedImagesourceBindingimport com.mapbox.maps.testapp.utils.BitmapUtils.bitmapFromDrawableRes /*** Load a raster image to a style using ImageSource and display it on a map as* animated weather data using RasterLayer.*/class AnimatedImageSourceActivity : AppCompatActivity() { private val handler: Handler = Handler(Looper.getMainLooper())private lateinit var mapboxMap: MapboxMapprivate lateinit var runnable: Runnable override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val binding = ActivityAnimatedImagesourceBinding.inflate(layoutInflater)setContentView(binding.root)mapboxMap = binding.mapView.mapboxMapmapboxMap.loadStyle(style(style = Style.STANDARD) {+imageSource(ID_IMAGE_SOURCE) {coordinates(listOf(listOf(-80.425, 46.437),listOf(-71.516, 46.437),listOf(-71.516, 37.936),listOf(-80.425, 37.936)))}+rasterLayer(ID_IMAGE_LAYER, ID_IMAGE_SOURCE) { }})} override fun onStart() {super.onStart()mapboxMap.getStyle {val imageSource: ImageSource = it.getSourceAs(ID_IMAGE_SOURCE)!!runnable = RefreshImageRunnable(applicationContext, imageSource, handler)handler.postDelayed(runnable, 100)}} override fun onStop() {super.onStop()if (::runnable.isInitialized) {handler.removeCallbacks(runnable)}} private class RefreshImageRunnable constructor(appContext: Context,private val imageSource: ImageSource,private val handler: Handler) :Runnable {private val drawables: Array = arrayOfNulls(4)private var drawableIndex: Int override fun run() {drawables[drawableIndex++]?.let { bitmap ->imageSource.updateImage(bitmap)if (drawableIndex > 3) {drawableIndex = 0}}handler.postDelayed(this, 1000)} init {drawables[0] = bitmapFromDrawableRes(appContext, R.drawable.southeast_radar_0)drawables[1] = bitmapFromDrawableRes(appContext, R.drawable.southeast_radar_1)drawables[2] = bitmapFromDrawableRes(appContext, R.drawable.southeast_radar_2)drawables[3] = bitmapFromDrawableRes(appContext, R.drawable.southeast_radar_3)drawableIndex = 1}} companion object {private const val ID_IMAGE_SOURCE = "animated_image_source"private const val ID_IMAGE_LAYER = "animated_image_layer"}}


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有